package com.homework;

/**
 * @Author 小闽
 * @Date 2024/9/21 23:32
 * @PackageName: com.homework
 * @ClassName: HomeWork02
 * @Description: 练习2
 * @Version 1.0
 */
public class HomeWork02 {
    public static void main(String[] args) {
        /**
         * 1. 在Frock类中声明私有的静态属性currentNum[int类型]，初始值为100000，
         *    作为衣服出厂的序列号起始值。
         * 2. 声明公有的静态方法getNextNum,作为生成上衣唯一序列号的方法，每调用一次，将currentNum增加100
         *    ，并作为返回值。
         * 3. 在TestFrock类的main方法中，分两次调用getNextNum方法，获取序列号并打印输出。
         * 4. 在Frock类中声明serialNumber（序列号）属性，并提供对应的get方法。
         * 5. 在Frock类的构造器中，通过调用getNextNum方法为Frock对象获取唯一序列号，赋给serialNumber属性。
         * 6. 在TestFrock类的main方法中，分别创建三个Frock对象，并打印三个对象的序列号，验证是否为按100递增。
         */

        // 需求分析：
        //1. 定义类Frock并在类中声明属性currentNum且为整数类型初始值为10000，静态static,私有private
        //2. 在类Frock中定义方法getNextNum()并且每调用一次，currentNum+=100,并且currentNum作为返回值
        //3. 在Frock中定义属性serialNumber属性并对属性进行封装
        //4. 定义serialNumber的getter方法并返回serialNuber的属性值
        //5. 在构造器中对serialNumber的值进行初始化，初始化的值是当每次调用静态方法getNextNum的时候currentNum的属性值

        // 在主方法中分两次调用getNextNum方法得到序列号，并输出
        int frock1 = Frock.getNextNum();
        int frock2 = Frock.getNextNum();
        System.out.println(frock1);
        System.out.println(frock2);
        //实例化三个Frock对象并打印输出序列号的值
        Frock frock = new Frock();
        Frock frock3 = new Frock();
        Frock frock4 = new Frock();
        System.out.println(frock.getSerialNumber());
        System.out.println(frock3.getSerialNumber());
        System.out.println(frock4.getSerialNumber());
    }
}
class Frock{
    // 衣服出厂的序列号起始值
    private static int currentNum = 100000;
    // 序列号属性
    private int serialNumber;
    // 生成上衣序列号的方法 getNextNum()方法每次被调用，currentNum的值都会增加100，并作为返回值
    public static int getNextNum(){
        currentNum += 100;
        return currentNum;
    }
    // 序列号属性
    public int getSerialNumber() {
        return serialNumber;
    }
    /**
     * 构造器
     * 在构造器中通过getNextNum()方法中生成的序列号赋给serialNumber属性
     */
    public Frock() {
        this.serialNumber = getNextNum();
    }
}
